<script>

    // 基本语法
    let fun = () => { }
    let fun1 = (a, b, c) => { }//****

    // 如果只有一个参数，小括号可以省略
    let fun2 = (a) => { }
    let fun3 = a => { }//*****


    // 如果只有一条语句，{}可以省略
    let fun4 = () => { console.log(111) }
    let fun5 = () => console.log(111)
    // 如果这条语句是return语句，那么省略花括号的同时，必须省略return
    let fun6 = () => 2222222222
    // 如果返回的是对象，必须加()
    let fun7 = () => ({ name: 'zs' })


    // let fun8=a=>b=>c=>d=>1
    let fun8 = 
    (a) => {
        (b) => {
            (c) => {
                (d) => { return 1 }
            }
        }

    }


    // 特点
    // 箭头函数没有arguments，用rest剩余参数代替
    // 箭头函数不能作为构造函数，不能new
    // 箭头函数不绑定this,它的this取决于它的父级环境中的this。在定义函数的时候就已经确定了，不是在调用的时候决定的
    // call和apply不能改变this指向


    // this指向
    // 箭头函数不绑定this,它的this取决于它的父级环境中的this。在定义函数的时候就已经确定了，不是在调用的时候决定的
    // 环境 全局环境   局部环境（函数） （和var的作用域一样）


</script>